package com.settlement.system.model.param;

import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import org.hibernate.validator.constraints.NotBlank;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * FMS 收退，退款报表请求参数
 *
 * @author Ximi
 * @since 2020/08/12
 */
@Data
public class RpaChargeTaskGetApiReponseParams implements Serializable {

    /**
     * OA流程编号
     */
    @ExcelProperty(value = "OA流程编号")
    @ApiModelProperty(value = "OA流程编号",required = true)
    @NotBlank(message = "OA流程编号不能为空")
    private String oaProcessNo;

    /**
     * 流程requestID
     */
    @ExcelProperty(value = "流程requestID")
    @ApiModelProperty(value = "流程requestID",required = true)
    @NotBlank(message = "流程requestID不能为空")
    private String processRequestId;

    /**
     * 明细序号ID
     */
    @ExcelProperty(value = "明细序号ID")
    @ApiModelProperty(value = "明细序号ID",required = true)
    @NotBlank(message = "明细序号ID不能为空")
    private String detailNumberId;

    /**
     * OA归档日期
     */
    @ExcelProperty(value = "OA归档日期")
    @ApiModelProperty(value = "OA归档日期",required = true)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @NotNull(message = "OA归档日期不能为空")
    private Date oaArchiveDate;

    /**
     * 店铺名称
     */
    @ExcelProperty(value = "店铺名称")
    @ApiModelProperty(value = "店铺名称")
    private String shopAccount;

    /**
     * 登录账号
     */
    @ExcelProperty(value = "登录账号")
    @ApiModelProperty(value = "登录账号")
    private String loginAccount;

    /**
     * 平台
     */
    @ExcelProperty(value = "平台")
    @ApiModelProperty(value = "平台",required = true)
    @NotBlank(message = "平台不能为空")
    private String channelName;

    /**
     * 费用大类
     */
    @ExcelProperty(value = "费用大类")
    @ApiModelProperty(value = "费用大类",required = true)
    private String costCategories;

    /**
     * 费用小类
     */
    @ExcelProperty(value = "费用小类")
    @ApiModelProperty(value = "费用小类",required = true)
    private String costSmallClass;

    /**
     * 费用细类
     */
    @ExcelProperty(value = "费用细类")
    @ApiModelProperty(value = "费用细类",required = true)
    @NotBlank(message = "费用细类不能为空")
    private String costDetail;

    /**
     * OA申请金额
     */
    @ExcelProperty(value = "OA申请金额")
    @ApiModelProperty(value = "OA申请金额",required = true)
    @NotNull(message = "OA申请金额不能为空")
    private String applyForAmount;

    /**
     * 任务状态 任务状态: 0:未支付, 1:RPA充值成功, 2:RPA充值失败, 3:需人工介入
     */
    @ExcelProperty(value = "任务状态")
    @ApiModelProperty(value = "任务状态: 0:未支付, 1:RPA充值成功, 2:RPA充值失败, 3:需人工介入")
    private String taskStatus;

    /**
     * 付款账号
     */
    @ExcelProperty(value = "付款账号")
    @ApiModelProperty(value = "付款账号",required = true)
    @NotBlank(message = "付款账号不能为空")
    private String paymentAccount;

    /**
     * 付款金额
     */
    @ExcelProperty(value = "付款金额")
    @ApiModelProperty(value = "付款金额")
    private BigDecimal payAmount;

    /**
     * 付款时间
     */
    @ExcelProperty(value = "付款时间")
    @ApiModelProperty(value = "付款时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date lastPayTime;

    /**
     * 银行订单号
     */
    @ExcelProperty(value = "银行订单号")
    @ApiModelProperty(value = "银行订单号")
    private String bankOrder;

    /**
     * 平台交易流水号
     */
    @ExcelProperty(value = "平台交易流水号")
    @ApiModelProperty(value = "平台交易流水号")
    private String transactionNumber;

    /**
     * 平台代码
     */
    @ExcelProperty(value = "平台代码")
    @ApiModelProperty(value = "平台代码")
    private String channelNo;

    /**
     * NC店铺编码
     */
    @ExcelProperty(value = "NC店铺编码")
    @ApiModelProperty(value = "NC店铺编码",required = true)
    @NotBlank(message = "NC店铺编码不能为空")
    private String ncShopNo;

    /**
     * NC店铺名称
     */
    @ExcelProperty(value = "NC店铺名称")
    @ApiModelProperty(value = "NC店铺名称")
    private String ncShopName;

    /**
     * 申请人工号
     */
    @ExcelProperty(value = "申请人工号")
    @ApiModelProperty(value = "申请人工号",required = true)
    @NotBlank(message = "申请人工号不能为空")
    private String jobNo;

}
